The present disclosure relates generally to avoiding web request failures before they occur by component analysis.
In general, a web request can be a web service implementation or any other response to a request provided by an application server. Web requests can be implemented with respect to a collaboration of a number of different hardware and software components amongst databases and/or servers. For instance, an application of an application server can make a web request to one or more databases and/or web services implemented on other application servers. This web request can further require additional interaction from hardware and software components within these databases and/or servers. Yet, if any of these required databases, web services, servers, or components are unavailable, then the corresponding web request will fail.
In general, discovery of one of the required databases, web services, servers, or components being unavailable occurs during processing of the web request. In turn, by the time the application running in the application server discovers the failed component (e.g., after communicating to the databases and/or servers), the application server has already spent processing cycles and used memory (and other resources like thread pools) on performing processing that must be discarded due to an error related to the failed component.
Contemporary implementations exist to identify whether a particular component is available or in a slow or about to fail state. However, these contemporary implementations have limited efficiency as they can require a complex membership protocol to determine failing components and are more concerned with long-running activities rather than web requests. Further, contemporary implementations can also require that a composite web service be fully specified and that an execution of each step in an ongoing flow be “pre-processed” through a state machine, both of which are computationally expensive.